"""
需求：封装一个日志获取工具，用于项目中所有模块的日志记录，需要在控制台和文件中输出日志
实现思路：
    1：创建日志目录（如果不存在）
    2：获取日志器（创建日志记录器）
    3：设置日志级别
    4：避免重复添加处理器
    5：创建文件处理器
    6：设置文件处理器级别
    7：创建控制台处理器
    8：设置控制台处理器级别
    9：设置日志格式
    10：为文件处理器设置格式
    11：为控制台处理器设置格式
    12：添加文件处理器
    13：添加控制台处理器
    14：返回日志器
"""
# 导入日志库
import logging
# 导入路径操作库
import os
# 导入配置类
from base.config import get_config

def setup_logging():
    config = get_config()
    log_file = config.LOG_FILE
    # 1：创建日志目录（如果不存在）
    os.makedirs(os.path.dirname(log_file), exist_ok=True)
    # 2：获取日志器（创建日志记录器）
    logger = logging.getLogger("EduRAG")
    # 3：设置日志级别
    logger.setLevel(logging.INFO)
    # 4：避免重复添加处理器
    if not logger.handlers:
        # 创建文件处理器
        file_handler = logging.FileHandler(log_file, encoding='utf-8')
        # 设置文件处理器级别
        file_handler.setLevel(logging.INFO)
        # 创建控制台处理器
        console_handler = logging.StreamHandler()
        # 设置控制台处理器级别
        console_handler.setLevel(logging.INFO)
        # 设置日志格式
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        # 为文件处理器设置格式
        file_handler.setFormatter(formatter)
        # 为控制台处理器设置格式
        console_handler.setFormatter(formatter)
        # 添加文件处理器
        logger.addHandler(file_handler)
        # 添加控制台处理器
        logger.addHandler(console_handler)
    # 返回日志器
    return logger

# 初始化日志器
logger = setup_logging()

def get_logger():
    return logger

if __name__ == '__main__':
    logger.info("测试日志")